﻿using System;
using System.Collections.Generic;
using System.Configuration;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Xml;

namespace Hetang.Models.MailServer
{
    public class MailServerConfigurationHandler : IConfigurationSectionHandler
    {
        // section 为 MailServerGroup 结点
        public object Create(object parent, object configContext, XmlNode section)
        {

            // 设置方法返回的配置对象，可以是任何类型
            MailServerConfig config = new MailServerConfig();

            // 获取结点的属性信息        
            config.Provider =
                section.Attributes["provider"] == null ? "" : section.Attributes["provider"].Value;

            // 获取 MailServer 结点
            foreach (XmlNode child in section.ChildNodes)
            {
                MailServer server = new MailServer();

                // 添加Client属性
                if (child.Attributes["client"] != null)
                    server.ServerNode.Add("client", child.Attributes["client"].Value);

                // 获取MailServer下的 Name,UserName,Password 结点
                foreach (XmlNode grandChild in child.ChildNodes)
                {
                    // 添加文本
                    server.ServerNode.Add(grandChild.Name, grandChild.InnerText);
                }

                // 将server加入 MailServerConfig
                config.Add(server);
            }
            return config;
        }
    }
}
